package com.ruoyi.prod.service.impl;

import java.util.List;
import com.ruoyi.common.core.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import com.ruoyi.common.core.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import com.ruoyi.prod.domain.TbProdInfo;
import com.ruoyi.prod.mapper.TbProdMapper;
import com.ruoyi.prod.domain.TbProd;
import com.ruoyi.prod.service.ITbProdService;

/**
 * 商品管理Service业务层处理
 * 
 * @author ruoyi
 * @date 2025-08-01
 */
@Service
public class TbProdServiceImpl implements ITbProdService 
{
    @Autowired
    private TbProdMapper tbProdMapper;

    /**
     * 查询商品管理
     * 
     * @param prodId 商品管理主键
     * @return 商品管理
     */
    @Override
    public TbProd selectTbProdByProdId(Integer prodId)
    {
        return tbProdMapper.selectTbProdByProdId(prodId);
    }

    /**
     * 查询商品管理列表
     * 
     * @param tbProd 商品管理
     * @return 商品管理
     */
    @Override
    public List<TbProd> selectTbProdList(TbProd tbProd)
    {
        return tbProdMapper.selectTbProdList(tbProd);
    }

    /**
     * 新增商品管理
     * 
     * @param tbProd 商品管理
     * @return 结果
     */
    @Transactional
    @Override
    public int insertTbProd(TbProd tbProd)
    {
        tbProd.setCreateTime(DateUtils.getNowDate());
        int rows = tbProdMapper.insertTbProd(tbProd);
        insertTbProdInfo(tbProd);
        return rows;
    }

    /**
     * 修改商品管理
     * 
     * @param tbProd 商品管理
     * @return 结果
     */
    @Transactional
    @Override
    public int updateTbProd(TbProd tbProd)
    {
        tbProd.setUpdateTime(DateUtils.getNowDate());
        tbProdMapper.deleteTbProdInfoByProdId(tbProd.getProdId());
        insertTbProdInfo(tbProd);
        return tbProdMapper.updateTbProd(tbProd);
    }

    /**
     * 批量删除商品管理
     * 
     * @param prodIds 需要删除的商品管理主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteTbProdByProdIds(Integer[] prodIds)
    {
        tbProdMapper.deleteTbProdInfoByProdIds(prodIds);
        return tbProdMapper.deleteTbProdByProdIds(prodIds);
    }

    /**
     * 删除商品管理信息
     * 
     * @param prodId 商品管理主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteTbProdByProdId(Integer prodId)
    {
        tbProdMapper.deleteTbProdInfoByProdId(prodId);
        return tbProdMapper.deleteTbProdByProdId(prodId);
    }

    /**
     * 新增商品信息信息
     * 
     * @param tbProd 商品管理对象
     */
    public void insertTbProdInfo(TbProd tbProd)
    {
        List<TbProdInfo> tbProdInfoList = tbProd.getTbProdInfoList();
        Integer prodId = tbProd.getProdId();
        if (StringUtils.isNotNull(tbProdInfoList))
        {
            List<TbProdInfo> list = new ArrayList<TbProdInfo>();
            for (TbProdInfo tbProdInfo : tbProdInfoList)
            {
                tbProdInfo.setProdId(prodId);
                list.add(tbProdInfo);
            }
            if (list.size() > 0)
            {
                tbProdMapper.batchTbProdInfo(list);
            }
        }
    }
}
